home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-03 | 5.3 KB | 246 lines | [TEXT/MPS ] |
- (*[n+,u+,r+,d+,#+,j=13-/40/1o,t=2,o=95] PasMat formatting options*)
- (*------------------------------------------------------------------------------
- FILE TestPerf.p
- Copyright Apple Computer, Inc. 1985-1987
- All rights reserved.
-
- NAME
- TestPerf
-
- DESCRIPTION
- This small tool demonstrates the use of the performance analysis tools.
- ------------------------------------------------------------------------------*)
- MODULE TestPerf;
-
- (*$SET doPerform TRUE*) (*set to false to omit Perform tools when debugging. *)
-
- (* $ Z**)
-
- IMPORT Types,
- (*$IF doPerform*)
- Write, Perf,
- (*$END*)
- (*needed for waste procedures, but not for Perf.p:*)
- Quickdraw;
-
- (*$IF doPerform*)
- VAR
- ThePGlobals: Perf.TP2PerfGlobals;
- (*$END*)
-
- (*[j=0] PasMat formatting option*)
-
- (* These are some procedures that "waste" time (W) in different amounts. *)
-
- (* First, some procedures that waste time in CODE segments: *)
-
- (*$S SEG1*)
-
- PROCEDURE W500A;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: (*integer*) LONGINT;
-
- BEGIN
- FOR i := 1 TO 500 DO
- junk := 1;
- junk1 := junk * 5;
- junk2 := (junk + junk1) * 5;
- END;
- END W500A;
-
- PROCEDURE W100;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: (*integer*) LONGINT;
-
- BEGIN
- FOR i := 1 TO 100 DO
- junk := 1;
- junk1 := junk * 5;
- junk2 := (junk + junk1) * 5;
- END;
- END W100;
-
- PROCEDURE W1500;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: (*integer*) LONGINT;
-
- BEGIN
- FOR i := 1 TO 1500 DO
- junk := 1;
- junk1 := junk * 5;
- junk2 := (junk + junk1) * 5;
- END;
- END W1500;
-
- (*$S SEG2*)
-
- PROCEDURE Waste;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: (*integer*) LONGINT;
-
- BEGIN
- FOR i := 1 TO 1 DO
- junk := 1;
- junk1 := junk * 5;
- junk2 := (junk + junk1) * 5;
- END;
- END Waste;
-
- PROCEDURE W500BwithAVeryLongName;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: (*integer*) LONGINT;
-
- BEGIN
- FOR i := 1 TO 500 DO
- junk := 1;
- junk1 := junk * 5;
- junk2 := (junk + junk1) * 5;
- END;
- END W500BwithAVeryLongName;
-
- (* Second, some procedures that waste time in ROM: *)
-
- (*$S ROMSEG1*)
-
- PROCEDURE ROMW500A;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: Types.Rect;
- dontCare: BOOLEAN;
-
- BEGIN
- FOR i := 1 TO 500 DO
- Quickdraw.SetRect(junk, 100, 200, 300, 400);
- Quickdraw.SetRect(junk1, 200, 300, 400, 500);
- dontCare := Quickdraw.SectRect(junk, junk1, junk2);
- END;
- END ROMW500A;
-
- PROCEDURE ROMW100;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: Types.Rect;
- dontCare: BOOLEAN;
-
- BEGIN
- FOR i := 1 TO 100 DO
- Quickdraw.SetRect(junk, 100, 200, 300, 400);
- Quickdraw.SetRect(junk1, 200, 300, 400, 500);
- dontCare := Quickdraw.SectRect(junk, junk1, junk2);
- END;
- END ROMW100;
-
- PROCEDURE ROMW1500;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: Types.Rect;
- dontCare: BOOLEAN;
-
- BEGIN
- FOR i := 1 TO 1500 DO
- Quickdraw.SetRect(junk, 100, 200, 300, 400);
- Quickdraw.SetRect(junk1, 200, 300, 400, 500);
- dontCare := Quickdraw.SectRect(junk, junk1, junk2);
- END;
- END ROMW1500;
-
- (*$S ROMSEG2*)
-
- PROCEDURE ROMWaste;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: Types.Rect;
- dontCare: BOOLEAN;
-
- BEGIN
- FOR i := 1 TO 1 DO
- Quickdraw.SetRect(junk, 100, 200, 300, 400);
- Quickdraw.SetRect(junk1, 200, 300, 400, 500);
- dontCare := Quickdraw.SectRect(junk, junk1, junk2);
- END;
- END ROMWaste;
-
- PROCEDURE ROMW500B;
-
- VAR
- i: INTEGER;
- junk, junk1, junk2: Types.Rect;
- dontCare: BOOLEAN;
-
- BEGIN
- FOR i := 1 TO 500 DO
- Quickdraw.SetRect(junk, 100, 200, 300, 400);
- Quickdraw.SetRect(junk1, 200, 300, 400, 500);
- dontCare := Quickdraw.SectRect(junk, junk1, junk2);
- END;
- END ROMW500B;
-
- VAR
- repeats: INTEGER;
-
- (*$MAIN*)
- BEGIN
-
- (*$IF doPerform*)
- ThePGlobals := NIL;
- IF ¬Perf.InitPerf(ThePGlobals,
- 4 (*ms*),
- 2 (*bytes*),
- TRUE, (*measure ROM code*)
- TRUE, (*measure application code*)
- "CODE", (*segments to measure*)
- 0, (*let the performance tools calculate the ROM id*)
- "", (*let the performance tools find the ROM name*)
- FALSE, (*don't measure RAM*)
- 0 (*low RAM*),
- $1FFFFF (*high RAM (2M)*),
- 16 (*default*) ) THEN
- Write.String('Errors during InitPerf.'); Write.Ln;
- HALT(1)
- END;
-
- IF Perf.PerfControl(ThePGlobals, TRUE) THEN (*turn on, throw away old state*) END;
- (*$END*)
-
- FOR repeats := 1 TO 5 DO
- (* waste some time in user Code/MUL4 *)
- Waste;
- W100;
- W500A;
- W500BwithAVeryLongName;
- W1500;
-
- (* waste some time in ROM calls: *)
- ROMWaste;
- ROMW100;
- ROMW500A;
- ROMW500B;
- ROMW1500;
- END;
-
- (*$IF doPerform*)
- IF Perf.PerfControl(ThePGlobals, FALSE) THEN (*turn off, throw away old state*) END;
-
- IF Perf.PerfDump(ThePGlobals, "Perform.out", FALSE, 80) # 0 THEN
- Write.String('Errors during dump.'); Write.Ln
- END;
-
- Perf.TermPerf(ThePGlobals);
- (*$END*)
-
- END TestPerf.
-